![](/img/trans.png)
[英]Given a list of coordinates in the first quadrant, calculate how many right triangles can be formed which have one side parallel to x-axis
[英]How to compare two images by memcmp which one do x-axis flip
我正在用 C++ 編寫一個圖像處理應用程序,需要比較圖像。 例如,我有兩個數組,如下所示:
int image1[] = {10, 20, 30, 40};
int image2[] = {40, 30, 20, 10};
我想找到一種比for
循環(如 memcmp)更有效的比較方法。
根據您的問題,不清楚您是要比較兩個圖像/整數數組的相等性,還是要檢查其中一個是否是另一個的翻轉版本。
在任何情況下,您都應該避免過度優化和使用memcmp
函數。 從復雜性的角度來看,與for
循環沒有區別:將優化留給您的編譯器,讓您的代碼易於閱讀和維護!
要檢查一個數組是否是另一個數組的翻轉版本,您可以使用以下代碼:
int image1[] = {10, 20, 30, 40};
int image2[] = {40, 30, 20, 10};
int len = 4;
bool equal = true;
for (int i = 0; i<len; i++) {
if (image1[i] != image2[len-i-1]) {
equal = false;
break;
}
}
您可以做的另一件事是將圖像散列與圖像一起存儲並僅比較圖像散列。 但它有一些缺點:
您需要從某個地方獲取大小,然后您可以memcmp
它們:
size_t size = 4;
int image1[] = {10, 20, 30, 40};
int image2[] = {40, 30, 20, 10};
if(!memcmp(image1, image2, sizeof(int) * size))
//equal
不過請注意,在這種情況下,填充可能會毀了您的一天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.