c jpeg YUV圖片幀分割成 8*8 塊 ,與逆向把8*8還原為幀

1.? 正向分割為若干8*8 塊

? ? ?下面的程序為通用程序,可以分割任意塊


#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/videodev2.h>  //v4l2 頭文件
#include <string.h>
#include <sys/mman.h>
#include <linux/fb.h>int main(void){char i[]={1, 2, 3, 4,   5, 6, 7, 8,9,10,11,12,   13,14,15,16,17,18,19,20,  21,22,23,24,25,26,27,28,  29,30,31,32,33,34,35,36,  37,38,39,40,41,42,43,44,  45,46,47,48,49,50,51,52,  53,54,55,56,57,58,59,60,  61,62,63,64};int width=8;              //被分割數據寬度int heigth=8;             //被分割數據高度int fwidth=4;             //分割塊的寬度     分割成4×2塊int fheigth=2;            //分割塊的高度char o[width*heigth];     //分割后的數據int t=0;for(int c=0;c<heigth/fheigth;c++){for(int b=c*width*fheigth;b<width+c*fheigth*width;b=b+fwidth){for(int a=0;a<fheigth;a++){memcpy(&o[t],&i[a*width+b],fwidth);t=t+fwidth;}}}
//--------------------------------------------------------------	char (*p1)[2][4]=(char (*)[2][4])o;   //顯示4×2 塊for(int a=0;a<8;a++){for(int b=0;b<2;b++){for(int c=0;c<4;c++){printf("%d  ",p1[a][b][c]);}printf("\n");}puts("-----------");}return 0;
}

2. 8*8 塊逆向 轉化為幀


#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <linux/videodev2.h>  //v4l2 頭文件
#include <string.h>
#include <sys/mman.h>
#include <linux/fb.h>int main(void){
/*	char i[]={1, 2, 3, 4,   5, 6, 7, 8,9,10,11,12,   13,14,15,16,17,18,19,20,  21,22,23,24,25,26,27,28,  29,30,31,32,33,34,35,36,  37,38,39,40,41,42,43,44,  45,46,47,48,49,50,51,52,  53,54,55,56,57,58,59,60,  61,62,63,64};*/char io[]={1,  2,  3,  4,  9,  10,  11,  12,  17,  18,  19,  20,  25,  26,  27,  28,  5,  6,  7,  8,  13,  14,  15,  16,  21,  22,  23,  24,  29,  30,  31,  32,  33,  34,  35,  36,  41,  42,  43,  44,  49,  50,  51,  52,  57,  58,  59,  60,  37,  38,  39,  40,  45,  46,  47,  48,  53,  54,  55,  56,  61,  62,  63,  64};int width=8;              //被分割數據寬度int heigth=8;             //被分割數據高度int fwidth=4;             //分割塊的寬度     int fheigth=4;            //分割塊的高度/*	char o[width*heigth];     //分割后的數據int t=0;for(int c=0;c<heigth/fheigth;c++){for(int b=c*width*fheigth;b<width+c*fheigth*width;b=b+fwidth){for(int a=0;a<fheigth;a++){   memcpy(&o[t],&i[a*width+b],fwidth);t=t+fwidth;}}}
*/	char oo[width*heigth];    int ot=0;for(int c=0;c<heigth/fheigth;c++){for(int a=0;a<fheigth;a++){for(int b=0;b<width/fwidth;b++){memcpy(&oo[ot],&io[b*fwidth*fheigth+a*fwidth+c*fheigth*fwidth*width/fwidth],fwidth);ot=ot+fwidth;}}}
//--------------------------------------------------------------	char (*p1)[4][4]=(char (*)[4][4])oo;   //顯示for(int a=0;a<4;a++){for(int b=0;b<4;b++){for(int c=0;c<4;c++){printf("%d,  ",p1[a][b][c]);}printf("\n");}puts("-----------");}return 0;
}

實話頭都繞暈了,看能不能再想一個好理解的方法。查表法簡單,但數據大了就不實用了,如果要程序生成大數據的表,感覺又多了一個環節。而且也不容易

但Z 型排列可以用查表法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209668.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如果微軟20年前開發.net core,JAVA會不會和IE一樣倒下了

可以跨平臺&#xff0c;大量類庫&#xff0c;微軟親自操刀&#xff0c;性能一流&#xff0c;因為沒有做跨平臺&#xff0c;.NET被 python,javascript等搶了一半以上市場。 如果微軟早早的推出類似.net core這樣的跨平臺語言&#xff0c;.net程序猿還會出在這樣的尷尬局面嗎眾所…

Java基礎-開發流程以及HelloWorld程序

目錄 1. Java的開發流程2. HelloWorld 1. Java的開發流程 開發Java程序&#xff0c;需要三個步驟&#xff1a;編寫代碼&#xff0c;編譯代碼&#xff0c;運行代碼 2. HelloWorld 編寫代碼 public class HelloWorld {public static void main(String[] args) {System.out.pri…

Ribbon 饑餓加載

Ribbon默認是采用懶加載&#xff0c;即第一次訪問時才會去創建LoadBalanceClient&#xff0c;請求時間會很長而饑餓加載則會在項目啟動時創建&#xff0c;降低第一次訪問的耗時&#xff0c;通過下面配置開啟饑餓加載: 一、懶加載 Ribbon 默認為懶加載即在首次啟動Application…

代碼隨想錄二刷 |二叉樹 | 二叉樹的層序遍歷

代碼隨想錄二刷 &#xff5c;二叉樹 &#xff5c; 二叉樹的層序遍歷 題目描述解題思路代碼實現 題目描述 102.二叉樹的層序遍歷 給你二叉樹的根節點 root &#xff0c;返回其節點值的 層序遍歷 。 &#xff08;即逐層地&#xff0c;從左到右訪問所有節點&#xff09;。 示例…

Flask 最佳實踐(一)

Flask是一個輕量級而強大的Python Web框架&#xff0c;它的簡潔性和靈活性使其成為許多開發者的首選。然而&#xff0c;為了確保項目的可維護性和可擴展性&#xff0c;我們需要遵循一些最佳實踐。本文將探討Flask中一些關鍵的最佳實踐。 1. 項目結構 構建一個清晰的項目結構是…

Java實現Socket聊天室

一、網絡編程是什么&#xff1f; 在網絡通信協議下&#xff0c;不同計算機上運行的程序&#xff0c;進行數據傳輸。 應用場景&#xff1a;即時通訊、網游對戰、金融證券、國際貿易、郵件、等等。 不管是什么場景&#xff0c;都是計算機與計算機之間通過網絡進行數據傳輸。 …

軟件測試之接口測試自動化(詳解版)

本著以和大家交流如何實現高效的接口測試為出發點&#xff0c;本文包含了我在接口測試領域的一些方法和心得&#xff0c;希望大家一起討論和分享&#xff0c;內容包括但不僅限于&#xff1a; 服務端接口測試介紹接口測試自動化介紹接口測試自動化實踐關于接口測試自動化的思考…

質量工程化,交付快速化

質量和速度之間權衡讓人很難取舍&#xff0c;而通過推進質量工程&#xff0c;以系統化的方式識別和優化系統痛點&#xff0c;可以幫助團隊構建既快又好的精益軟件生產系統。原文: Quality Engineered, Speed Delivered 所有人都想要更快的速度。 但需要解決復雜問題: 權衡質量會…

Kotlin(十四) 擴展函數和運算符重載

目錄 擴展函數 語法結構 代碼示例 運算符重載 語法結構 一元操作符 二元操作符 數值類型操作符 等于和不等于操作符 比較操作符 調用操作符 擴展函數 語法結構 對于擴張函數的語法結構其實很簡單&#xff0c;你想在那個類中添加擴張函數&#xff0c;那么你就用該類…

6. Zigzag Conversion

按照下標找規律注意leetcode的運行輸出&#xff0c;如果其中一組用例出現死循環&#xff0c;輸出結果會在一個文件&#xff0c;即部分測試用例正確&#xff0c;部分錯誤且出現死循環&#xff0c;則需辨別輸出結果屬于哪一份測試用例 class Solution { public:string convert(s…

(二)五種最新算法(SWO、COA、LSO、GRO、LO)求解無人機路徑規劃MATLAB

一、五種算法&#xff08;SWO、COA、LSO、GRO、LO&#xff09;簡介 1、蜘蛛蜂優化算法SWO 蜘蛛蜂優化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;該算法模型雌性蜘蛛蜂的狩獵、筑巢和交配行為&…

w3school學習筆記3(NumPy)

系列文章目錄 文章目錄 系列文章目錄前言一、NumPy簡介二、NumPy入門三、NumPy創建四、NumPy數組索引五、NumPy數組裁切六、NumPy數據類型七、NumPy副本/視圖八、NumPy數據形狀九、NumPy數組重塑十、NumPy數組迭代總結 前言 一、NumPy簡介 1、什么是Numpy&#xff1f; NumPy是…

線上盲盒小程序,開啟互聯網盲盒時代

近年來&#xff0c;盲盒經濟在國內非常火爆&#xff0c;各類盲盒品牌層出不窮&#xff0c;深受國內外年輕人、消費者的喜愛。 目前&#xff0c;根據數據顯示&#xff0c;盲盒市場不僅在線下異常火熱&#xff0c;線上盲盒也是成為了大眾的新選擇。各類電商平臺中盲盒的成交額更…

Esxi7Esxi8設置VMFSL虛擬閃存的大小

Esxi7Esxi8設置VMFSL虛擬閃存的大小 ESXi7,8 默認安裝會分配一個 VMFSL(VMFS-L)(Local VMFS)很大空間(120G), 感覺很浪費, 實際給 8G 就可以了, 最少 6G , 經實驗,給2G沒法安裝 . Esxi7是虛擬閃存的 修改的方法是: 在安裝時修改 設置 autoPartitionOSDataSize8192 在cdromBoo…

快捷切換raw頁面到repo頁面-Raw2Repo插件

Raw2Repo By Rick &#x1f4d6;快捷切換代碼托管平臺raw頁面到repo頁面 &#x1f517;github鏈接 https://github.com/rickhqh/Raw2Repo ?Features 功能&#xff1a; ?單擊 Raw2Repo 插件按鈕&#xff0c;即可跳轉到相應的代碼倉庫頁面。?支持 GitHub、Gitee、GitCode …

spring boot整合mybatis進行部門管理管理的增刪改查

部門列表查詢&#xff1a; 功能實現&#xff1a; 需求&#xff1a;查詢數據庫表中的所有部門數據&#xff0c;展示在頁面上。 準備工作&#xff1a; 準備數據庫表dept&#xff08;部門表&#xff09;&#xff0c;實體類Dept。在項目中引入mybatis的起步依賴&#xff0c;mysql的…

【ET8】1.ET8入門-運行指南

主要學習網址 論壇地址為&#xff1a;https://et-framework.cn Git地址為&#xff1a;GitHub - egametang/ET: Unity3D Client And C# Server Framework 官方QQ群 : 474643097 項目檢出 檢出項目切換到release8.0分支 GitHub地址&#xff1a;GitHub - egametang/ET: Unity…

[足式機器人]Part2 Dr. CAN學習筆記-數學基礎Ch0-5Laplace Transform of Convolution卷積的拉普拉斯變換

本文僅供學習使用 本文參考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN學習筆記-數學基礎Ch0-5Laplace Transform of Convolution卷積的拉普拉斯變換 Laplace Transform : X ( s ) L [ x ( t ) ] ∫ 0 ∞ x ( t ) e ? s t d t X\left( s \right) \mathcal{L} \left[ x\lef…

基于Swin_Transformer的圖像超分辨率系統

1.研究背景與意義 項目參考AAAI Association for the Advancement of Artificial Intelligence 研究背景與意義 隨著科技的不斷發展&#xff0c;圖像超分辨率技術在計算機視覺領域中變得越來越重要。圖像超分辨率是指通過使用計算機算法將低分辨率圖像轉換為高分辨率圖像的過…

AI:91-基于深度學習的手寫數學表達式識別

?? 本文選自專欄:人工智能領域200例教程專欄 從基礎到實踐,深入學習。無論你是初學者還是經驗豐富的老手,對于本專欄案例和項目實踐都有參考學習意義。 ??? 每一個案例都附帶有在本地跑過的核心代碼,詳細講解供大家學習,希望可以幫到大家。歡迎訂閱支持,正在不斷更新…